package com.itfenghuang.day03;

import java.math.BigDecimal;
import java.util.Random;

public class 复习 {
    public static void main(String[] args) {

        /**
         * Polymorphism  多态
         *  提高程序的扩展性
         *  polymorphism   同一个对象在不同的时刻表现出不同的形态
         *  polymorphism 前提条件
         *      两个类要有继承关系
         *      要有方法重写
         *      父类引用指向子类对象 Animal animal =   new  Cat();
         *
         *    成员变量  不具备多态性,只能调用父类中的变量
         *    成员方法  具备多态性
         *
         *     instanceof 关键字
         *     对象  instanceof  类型
         *     如果是会返回true,如果不是会返回false
         *     为了规避在进行向下转型的时候,有可能出现类型转换异常
         *
         *     Object:  是所有类的根
         *       自定义如果没有显示区继承父类的话,会自动让该类去继承Object
         *
         *       equals​
         *       方法重写,比较属性是否相等
         *
         *       toString[] 方法
         *
         *       Math  数学工具类
         *       绝对值
         *
         *       System
         *       system.exit( 0 )终止当前虚拟机 非零表示异常终止
         *
         *       public static native long currentTimeMillis()
         *       获取当前时间的毫秒值 有什么用呢  计算代码执行的时间
         *
         *       系统时间的毫秒值   1秒=1000ms
         *       计算机时间原点: 1970.1.1  00:00:00  是C语言诞生日
         *
         *
         *       BigDecimal:  用来对超过16位有效位的数进行精确的运算
         *       加  add
         *       减   subtract
         *       乘  multiply
         *
         *
         *       包装类:
         *              基本数据类型封装成引用数据类型
         * 引用数据类型:  类,接口
         *      基本数据类型              引用数据类型
         *        byte                       Byte
         *        short                      Short
         *        int                        Integer
         *        long                       Long
         *        float                      Float
         *        double                     Double
         *        char                       Character
         *        boolean                    Boolean
         */
        //向上转型:  子类型转父类型  自动
//        Animal1 animal1 = new Cat1();
//        animal1.eat();
//        Animal1 animal11 = new Dog1();
//        animal1.eat();
//        System.out.println(animal1.a);
//        强制转换 动物转猫类
        //向下转型:  父类型转子类型  强制类型转换
//        Cat1 cat1= (Cat1)animal1;
//        cat1.catchMouse();
//        System.out.println(cat1.a);
        //判断左边的对象是否是右边的类型
//        if (animal1 instanceof Cat1){
//            Cat1 cat1= (Cat1)animal1;
//            boolean b = animal1 instanceof Cat1;
//            System.out.println(b);
//        }


        Student student = new Student("爆爆",6);
        Student student1 = new Student("爆爆",6);
        System.out.println(student == student1);
        System.out.println(student.equals(student1));//equals 在类中重写


//        Student student = new Student("爆爆",13);
        //底层会自动调用toString(),如果直接打印对象名的话
//        System.out.println(student.toString());

//        int abs = Math.abs(10);//绝对值
//        System.out.println(abs);
//        int max = Math.max(4, 11);//取最大值
//        System.out.println(max);
//        int min = Math.min(11, 5);//取最小值
//        System.out.println(min);
//        double floor = Math.floor(12.64);//向下取整
//        System.out.println(floor);
//        double ceil = Math.ceil(12.64);//向上取整进一位
//        System.out.println(ceil);
//        double random = Math.random();//随机数
//        System.out.println(random);
//        double pow = Math.pow(2, 4);//一个数的次方
//        System.out.println(pow);
//        long round = Math.round(12.64);//四舍五入
//        System.out.println(round);

//        System.out.println(Math.max(4, 1));
//        System.out.println(Math.min(10, 22));
//        System.out.println(Math.abs(11));
//        System.out.println(Math.ceil(22.66));//向上取整
//        System.out.println(Math.floor(22.66));//向下取整
//        System.out.println(Math.pow(2, 3));
//        System.out.println(Math.random());//随机数
//        Random random = new Random();
//        System.out.println(random.nextInt(2));
//
//        BigDecimal bigDecimal1 = new BigDecimal(21.22);
//        BigDecimal bigDecimal2 = new BigDecimal(2.12);
//
//        System.out.println(bigDecimal1.add(bigDecimal2));//加法
//        System.out.println(bigDecimal1.subtract(bigDecimal2));//减法
//        System.out.println(bigDecimal1.multiply(bigDecimal2));//乘法
//        System.out.println(bigDecimal1.divide(bigDecimal2, 2, BigDecimal.ROUND_DOWN));


//        System.out.println("爆爆");
//        System.exit(0);//终止当前虚拟机

//        long resu = System.currentTimeMillis();
//        for (int i = 0; i <resu ; i++) {
//            System.out.println(resu);
//        }
//        long result = System.currentTimeMillis();//获取当前时间的毫秒值
//        System.out.println(result);


//        BigDecimal bigDecimal1 = new BigDecimal(4.5);
//        BigDecimal bigDecimal2 = new BigDecimal(2.5);
//
//        System.out.println(bigDecimal1.add(bigDecimal2));
//        System.out.println(bigDecimal1.subtract(bigDecimal2));
//        System.out.println(bigDecimal1.multiply(bigDecimal2));
//        System.out.println(bigDecimal1.divide(bigDecimal2));
//        //保留几位小数 scale  roudingMode: 省略模式
//        BigDecimal divide = bigDecimal1.divide(bigDecimal2,2,bigDecimal1.ROUND_HALF_UP);
//        System.out.println(divide);

        //字符串类型数据转换成 int类型数据
//        int i=Integer.parseInt("444");
//        System.out.println(i);
        //将int类型数据转成Integer 数据
//        Integer integer = Integer.valueOf(2);
//        System.out.println(integer);
       // 自动装箱  基本类型数据自动转成对应的包装类型  int 自动转成Integer
//        int num=20;
//        Integer integer1=num;
       //自动拆箱 将包装类型数据自动转成对应的基本数据类型数据 integer 自动转成 int
//        int a=integer;
//        System.out.println(a);
        //常量池  面试题
        //我们是用integer 大部分使用里面的parseInt 方法 将字符串("123")转成 int类型的数据

    }

}
class Animal1{
   public int a=2;
    public void eat(){
        System.out.println("吃饭");
    }
}
class Cat1 extends Animal1{
   public int a=4;
    @Override
    public void eat() {
        super.eat();
    }
    public void  catchMouse(){
        System.out.println("抓老鼠");
    }
}
class Dog1 extends Animal1{
    @Override
    public void eat(){
        super.eat();
    }
}